Usé el primer enfoque de la base de datos. El modelo es correcto (o al menos lo parece) Pero siempre me sale este error. Por favor, ya probé muchas cosas. El código completo de mi programa (e incluso el script sql con el que creo mi base de datos) está aquí: https://github.com/AntonioParroni/test-task-for-backend -stack/blob/main/Server/Models/ApplicationContext.cs
Ya que tengo un mac. Creé mi modelo con comandos dotnet ef cli (andamio dbcontext) Puedo usar mi contexto. Pero no puedo tocar ningún DbSet..
public static void Main(string[] args) { using (ApplicationContext context = new ApplicationContext()) { Console.WriteLine(context.Database.CanConnect()); var months = context.Months.ToList(); foreach (var month in months) { Console.WriteLine(month.MonthName); } } //CreateHostBuilder(args).Build().Run(); }No es la primera vez que uso EF. Y todo funcionaba bien antes, en muchos proyectos o tareas simples. Mientras estoy aquí.... No importa lo que haga (incluso traté de cambiar el nombre de todas mis columnas, borrar todas las tablas excepto una, modificar el código de contexto, usar los mismos pasos de este proyecto en una nueva, totalmente vacía proyecto..) Siempre es..
Unhandled exception. System.TypeInitializationException: The type initializer for 'Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Microsoft.EntityFrameworkCore.Query.QueryableMethods' threw an exception. ---> System.InvalidOperationException: Sequence contains more than one matching element at System.Linq.ThrowHelper.ThrowMoreThanOneMatchException() in System.Linq.dll:token 0x600041c+0xa ect....Aquí está mi archivo de referencia del paquete
"restore":{"projectUniqueName":"/Users/mac/Documents/GitHub/test-task-for-backend-stack/Server/Server.csproj", "projectName":"Server","projectPath":"/Users/mac/Documents/GitHub/test-task-for-backend-stack/Server/Server.csproj", "outputPath":"/Users/mac/Documents/GitHub/test-task-for-backend-stack/Server/obj/","projectStyle": "PackageReference","originalTargetFrameworks":["net6.0"],"sources":{"https://api.nuget.org/v3/index.json":{}}, "frameworks":{"net6.0":{"targetAlias":"net6.0","projectReferences":{}}}, "warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net6.0": {"targetAlias":"net6.0","dependencies":{"EntityFramework": {"target":"Package","version":"[6.4.4, )"}, "Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", "suppressParent":"All","target":"Package","version":"[5.0.0, )"}, "Microsoft.EntityFrameworkCore.SqlServer":{"target":"Package","version":"[5.0.0, )"}, "Swashbuckle.AspNetCore":{"target":"Package","version":"[5.6.3, )"}}, "imports":["net461","net462","net47","net471","net472","net48"], "assetTargetFallback":true,"warn":true, "frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"}, "Microsoft.NETCore.App":{"privateAssets":"all"}}, "runtimeIdentifierGraphPath":"/usr/local/share/dotnet/sdk/6.0.100-preview.6.21355.2/RuntimeIdentifierGraph.json"}}Ya han pasado unos días. Y me estoy volviendo muy confundido y enojado. ¿Por qué sucede esto... y por qué no hay tanta información sobre este tipo de error en Internet? Por favor, solo indícame en la dirección correcta...
Tiene el marco de destino net6.0 que aún no se ha lanzado mientras ha instalado EF6, que es una iteración anterior de Entity Framework (utilizado principalmente con proyectos heredados de .NET Framework) y también tiene EF Core (una iteración moderna) pero una versión anterior - 5.0 (que en realidad está usando para su contexto, consulte las declaraciones de using Microsoft.EntityFrameworkCore; allí).
Intente eliminar el paquete EntityFramework e instale la versión de vista previa de Microsoft.EntityFrameworkCore.SqlServer (también posiblemente solo actualizar a la última versión 5 también puede ayudar) y elimine por completo o instale la versión de vista previa de Microsoft.EntityFrameworkCore.Design . (También recomendaría actualizar su SDK a rc e instalar versiones rc de paquetes).
O intente eliminar la referencia a EntityFramework (no Core one) y cambie el marco de destino a net5.0 (si lo tiene instalado en su máquina).
En cuanto a por qué ve esta excepción, supongo que está relacionada con los nuevos métodos agregados a Queryable en .NET 6 que hicieron que una de estas comprobaciones fallara.
TL;DR
Como se menciona en los comentarios, actualice EF Core a la última versión correspondiente (funcionó para 5.0 y 3.1) o actualice a .NET 6.0 y EF Core 6.